package hmis.pos.Base.BaseService.Impl;

import hmis.pos.Base.BaseEntity.BaseEntity;
import hmis.pos.Base.BaseRepository.BaseRepository;
import hmis.pos.Base.BaseService.BaseService;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;
import java.util.Optional;

public class BaseServiceImpl<T extends BaseEntity,R extends BaseRepository<T>> implements BaseService<T> {

    @Autowired
    private R r;

    /**
     * 保存实体即插入实体
     * @param t
     * @return
     */
    @Override
    public T save(T t) {
        return r.save(t);
    }

    /**
     * 通过id查找，不存在则返回null
     * @param id
     * @return
     */
    @Override
    public T findById(String id) {
        Optional<T> optional = r.findById(id);
        if(optional.isPresent())
            return optional.get();
        else return null;
    }


    /**
     * 通过id查找到实体，并实现更新
     * @param t
     * @return
     */
    @Override
    public T update(T t) {
        if(findById(t.getId())==null)
            return null;
        return r.save(t);
    }

    /**
     * 通过id查找到实体并且执行删除
     * @param t
     * @return
     */
    @Override
    public boolean delete(T t) {
        if(findById(t.getId())==null)
            return false;
        r.delete(t);
        return true;
    }

    /**
     * 查询所有实体
     * @return
     */
    @Override
    public List<T> findAll() {
        return r.findAll();
    }

}
